﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVatTu.Class;
using QLVatTu.InBaoCao;

namespace QLVatTu.BaoCao
{
    public partial class frmBaoCaoTonKho : Form
    {
        KetNoiDB cn = new KetNoiDB();

        public frmBaoCaoTonKho()
        {
            InitializeComponent();
        }

        private void loadData()
        {
            cmbKhoLoc.DataSource = cn.getTable("select * from tbl_Kho");
            cmbKhoLoc.DisplayMember = "TenKho";
            cmbKhoLoc.ValueMember = "MaKho";

            cbbNhomVatTu.DataSource = cn.getTable("select * from tbl_NhomVatTu");
            cbbNhomVatTu.DisplayMember = "TenNhomVatTu";
            cbbNhomVatTu.ValueMember = "MaNhomVatTu";

            cmbVatTu.DataSource = cn.getTable("select * from tbl_VatTu");
            cmbVatTu.DisplayMember = "TenVatTu";
            cmbVatTu.ValueMember = "MaVatTu";

            DataGridViewComboBoxColumn dgvcmb = (DataGridViewComboBoxColumn)dgvTonKho.Columns[4];
            dgvcmb.DataSource = cn.getTable("select * from tbl_Kho");
            dgvcmb.DisplayMember = "TenKho";
            dgvcmb.ValueMember = "MaKho";

            load_grid_view();
        }

        private void frmBaoCaoTonKho_Load(object sender, EventArgs e)
        {
            if (cn.KetNoi())
            {
                loadData();
            }
            else
            {
                MessageBox.Show("Kết nối CSDL thất bại!");
                this.Close();
            }
        }

        private void load_grid_view(string dieuKien = null)
        {
            string sql = "";
            if (dieuKien != null)
            {
                sql = @"
                      SELECT     dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_LuuKho.MaKho, SUM(dbo.tbl_LuuKho.SoLuong) 
                                          AS TonKho
                    FROM         dbo.tbl_LuuKho INNER JOIN
                                  dbo.tbl_VatTu ON dbo.tbl_LuuKho.MaVatTu = dbo.tbl_VatTu.MaVatTu INNER JOIN
                                  dbo.tbl_NhomVatTu ON dbo.tbl_VatTu.MaNhomVatTu = dbo.tbl_NhomVatTu.MaNhomVatTu INNER JOIN
                                  dbo.tbl_DonViTinh ON dbo.tbl_VatTu.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh
                                "
                    + dieuKien + @"
                    Group By dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_LuuKho.MaKho
                    ORDER BY dbo.tbl_LuuKho.MaVatTu ASC, dbo.tbl_LuuKho.MaKho ASC";
            }
            else
            {
                sql = @"
                    SELECT     dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_LuuKho.MaKho, SUM(dbo.tbl_LuuKho.SoLuong) 
                                          AS TonKho
                    FROM         dbo.tbl_LuuKho INNER JOIN
                                          dbo.tbl_VatTu ON dbo.tbl_LuuKho.MaVatTu = dbo.tbl_VatTu.MaVatTu INNER JOIN
                                          dbo.tbl_DonViTinh ON dbo.tbl_VatTu.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh
                    GROUP BY dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_LuuKho.MaKho
                    ORDER BY dbo.tbl_LuuKho.MaVatTu, dbo.tbl_LuuKho.MaKho";
            }
            DataTable dt = new DataTable();
            dt = cn.getTable(sql);
            dgvTonKho.Rows.Clear();
            if (dt.Rows.Count > 0)
            {
                dgvTonKho.Rows.Clear();
                int stt = 0;
                string _MaVatTu = "";
                foreach (DataRow dr in dt.Rows)
                {
                    if (_MaVatTu != "" && _MaVatTu == dr["MaVatTu"].ToString()) continue;
                    _MaVatTu = dr["MaVatTu"].ToString();
                    stt++;
                    DataGridViewRow dgvr = (DataGridViewRow)dgvTonKho.Rows[0].Clone();
                    dgvr.Cells[0].Value = stt.ToString();
                    dgvr.Cells[1].Value = _MaVatTu;
                    dgvr.Cells[2].Value = dr["TenVatTu"].ToString();
                    dgvr.Cells[3].Value = dr["TenDonViTinh"].ToString();
                    dgvr.Cells[4].Value = dr["MaKho"].ToString();
                    dgvr.Cells[5].Value = dr["TonKho"].ToString();
                    dgvTonKho.Rows.Add(dgvr);
                }
            }
        }

        private string XacDinhDieuKienLoc()
        {
            string dieuKienLoc = "WHERE 1=1 ";
            if (ckbKhoLoc.Checked == true && cmbKhoLoc.Items.Count > 0)
            {
                dieuKienLoc += " AND dbo.tbl_LuuKho.MaKho = '" + cmbKhoLoc.SelectedValue.ToString() + "'";
            }
            if (ckbNhomVatTu.Checked == true && cbbNhomVatTu.Items.Count > 0)
            {
                dieuKienLoc += " AND dbo.tbl_NhomVatTu.MaNhomVatTu = '" + cbbNhomVatTu.SelectedValue.ToString() + "'";
            }
            if (ckbVatTu.Checked == true && cmbVatTu.Items.Count > 0)
            {
                dieuKienLoc += " AND dbo.tbl_VatTu.MaVatTu = '" + cmbVatTu.SelectedValue.ToString() + "'";
            }
           
            return dieuKienLoc;
        }

        private void btnLoc_Click(object sender, EventArgs e)
        {
            load_grid_view(XacDinhDieuKienLoc());
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            frmInBaoCaoTonKho frm = new frmInBaoCaoTonKho();
            string dieuKien = XacDinhDieuKienLoc();
            string sql = @"
                    SELECT     dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu as VatTu, dbo.tbl_DonViTinh.TenDonViTinh as DVT, dbo.tbl_Kho.TenKho as Kho, SUM(dbo.tbl_LuuKho.SoLuong) as TonKho
                    FROM         dbo.tbl_LuuKho INNER JOIN
                                      dbo.tbl_VatTu ON dbo.tbl_LuuKho.MaVatTu = dbo.tbl_VatTu.MaVatTu INNER JOIN
                                      dbo.tbl_NhomVatTu ON dbo.tbl_VatTu.MaNhomVatTu = dbo.tbl_NhomVatTu.MaNhomVatTu INNER JOIN
                                      dbo.tbl_DonViTinh ON dbo.tbl_VatTu.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh INNER JOIN
                                      dbo.tbl_Kho ON dbo.tbl_LuuKho.MaKho = dbo.tbl_Kho.MaKho
                                "
                    + dieuKien + @"
                    Group By dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_Kho.TenKho
                    ORDER BY dbo.tbl_LuuKho.MaVatTu ASC, dbo.tbl_Kho.TenKho ASC";
            frm.BaoCaoTonKhoBindingSource.DataSource = cn.getTable(sql);
            frm.ShowDialog();
        }

        private void ckbKhoLoc_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbKhoLoc.Checked == true)
            {
                cmbKhoLoc.Enabled = true;
            }
            else
            {
                cmbKhoLoc.Enabled = false;
            }
        }

        private void ckbVatLieu_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbNhomVatTu.Checked == true)
            {
                cbbNhomVatTu.Enabled = true;
                cmbVatTu.DataSource = cn.getTable("SELECT [MaVatTu],[TenVatTu] FROM [tbl_VatTu] WHERE [MaNhomVatTu] = '" + cbbNhomVatTu.SelectedValue.ToString() + "'");
                cmbVatTu.DisplayMember = "TenVatTu";
                cmbVatTu.ValueMember = "MaVatTu";
            }
            else
            {
                cbbNhomVatTu.Enabled = false;
                cmbVatTu.DataSource = cn.getTable("SELECT [MaVatTu],[TenVatTu] FROM [tbl_VatTu]");
                cmbVatTu.DisplayMember = "TenVatTu";
                cmbVatTu.ValueMember = "MaVatTu";
            }
        }

        private void ckbVatTu_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbVatTu.Checked == true)
            {
                cmbVatTu.Enabled = true;
            }
            else
            {
                cmbVatTu.Enabled = false;
            }
        }

        private void cbbNhomVatTu_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbNhomVatTu.SelectedValue != null)
            {
                cmbVatTu.DataSource = cn.getTable("SELECT [MaVatTu],[TenVatTu] FROM [tbl_VatTu] WHERE [MaNhomVatTu] = '" + cbbNhomVatTu.SelectedValue + "'");
                cmbVatTu.DisplayMember = "TenVatTu";
                cmbVatTu.ValueMember = "MaVatTu";
            }
        }

        private void dgvTonKho_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvTonKho.RowCount > 0 && e.RowIndex != -1)
            {
                if (e.ColumnIndex == 4 && dgvTonKho.Rows[e.RowIndex].Cells[1].Value != null && dgvTonKho.Rows[e.RowIndex].Cells[4].Value != null)
                {
                    string sql = "";
                    sql = @"
                        SELECT     dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu as VatTu, dbo.tbl_DonViTinh.TenDonViTinh as DVT, dbo.tbl_Kho.MaKho, SUM(dbo.tbl_LuuKho.SoLuong) as TonKho
                        FROM         dbo.tbl_LuuKho INNER JOIN
                                          dbo.tbl_VatTu ON dbo.tbl_LuuKho.MaVatTu = dbo.tbl_VatTu.MaVatTu INNER JOIN
                                          dbo.tbl_DonViTinh ON dbo.tbl_VatTu.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh INNER JOIN
                                          dbo.tbl_Kho ON dbo.tbl_LuuKho.MaKho = dbo.tbl_Kho.MaKho
                                "
                    + " WHERE 1=1 AND dbo.tbl_VatTu.MaVatTu = '" + dgvTonKho.Rows[e.RowIndex].Cells[1].Value + "' AND dbo.tbl_LuuKho.MaKho = '" + dgvTonKho.Rows[e.RowIndex].Cells[4].Value + "'" + @"
                    Group By dbo.tbl_LuuKho.MaVatTu, dbo.tbl_VatTu.TenVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_Kho.MaKho
                    ORDER BY dbo.tbl_LuuKho.MaVatTu ASC, dbo.tbl_Kho.MaKho ASC";

                    DataTable dt = new DataTable();
                    dt = cn.getTable(sql);
                    if (dt.Rows.Count > 0)
                    {
                        string stt = dgvTonKho.Rows[e.RowIndex].Cells[0].Value.ToString();
                        DataGridViewTextBoxCell txtSTT = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["STT"];
                        txtSTT.Value = stt;
                        DataGridViewTextBoxCell txtMaVatTu = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["MaVatTu"];
                        txtMaVatTu.Value = dt.Rows[0]["MaVatTu"].ToString();
                        DataGridViewTextBoxCell txtVatTu = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["VatTu"];
                        txtVatTu.Value = dt.Rows[0]["VatTu"].ToString();
                        DataGridViewTextBoxCell txtDVT = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["DVT"];
                        txtDVT.Value = dt.Rows[0]["DVT"].ToString();
                        DataGridViewComboBoxCell cmbKho = (DataGridViewComboBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["Kho"];
                        cmbKho.Value = dt.Rows[0]["MaKho"].ToString();
                        DataGridViewTextBoxCell txtTonKho = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["TonKho"];
                        txtTonKho.Value = dt.Rows[0]["TonKho"].ToString();
                    }
                    else
                    {
                        DataGridViewTextBoxCell txtTonKho = (DataGridViewTextBoxCell)dgvTonKho.Rows[e.RowIndex].Cells["TonKho"];
                        txtTonKho.Value = 0;
                    }
                }
            }
        }
    }
}
